﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using corpus_platform.Data;

namespace corpus_platform.ViewModels
{
    public interface INodeStructure
    {
        public StructureType Type { get; }
        public RootViewModel Root { get; }
        public bool AllowDrag { get; set; }
        public void ChangeParentTo(INodeContainer container);
        public object GetValue(MetaInformation metaInformation);
    }

    public interface INodeFrameElement
    {
        public FrameElementType Type { get; }
        public string Name { get; }
        public FrameViewModel Frame { get; set; }
        public void GetValue(MetaInformation metaInformation, FrameInstanceValue frameInstanceValue);
        public void InformChangeFrameStatus();
    }

    public interface INodeContainer
    {
        public Result add(INodeStructure structure);
        public void remove(INodeStructure structure);
        public void SweepStorageToRoot();
    }

    public enum StructureType
    {
        Frame,
        Ontology,
        Root
    }
}
